/**
 * Vue与WinForms通信桥接脚本
 * 此文件应该被引入到Vue项目中
 */

/**
 * 初始化与WinForms的WebView2通信
 */
export function initWinFormsBridge() {
  console.log('[Vue-WinForms] 初始化通信桥接');
  
  // 监听来自WinForms的初始化参数
  window.addEventListener('init-params', function(e) {
    console.log('[Vue-WinForms] 收到初始化参数:', e.detail);
    // 存储参数到全局对象
    window.__WINFORMS_PARAMS__ = e.detail;
    // 触发自定义事件，Vue应用可以监听此事件
    window.dispatchEvent(new CustomEvent('winforms-params-received', { detail: e.detail }));
  });
  
  // 监听用户信息
  window.addEventListener('user-info', function(e) {
    console.log('[Vue-WinForms] 收到用户信息:', e.detail);
    // 触发自定义事件，Vue应用可以监听此事件
    window.dispatchEvent(new CustomEvent('winforms-user-info', { detail: e.detail }));
  });
}

/**
 * 获取初始化参数
 */
export function getInitParams() {
  return window.__INITIAL_PARAMS__ || window.__WINFORMS_PARAMS__ || {};
}

/**
 * 关闭窗口
 */
export function closeWindow() {
  // 向WinForms发送关闭窗口消息
  window.chrome.webview.postMessage({
    type: 'closeWindow'
  });
}

/**
 * 获取当前用户信息
 * @returns {Promise} 包含用户信息的Promise
 */
export function getCurrentUser() {
  return new Promise((resolve) => {
    // 注册一次性事件监听器接收结果
    const listener = function(e) {
      window.removeEventListener('winforms-user-info', listener);
      resolve(e.detail);
    };
    
    // 添加事件监听
    window.addEventListener('winforms-user-info', listener);
    
    // 发送请求获取用户信息
    window.chrome.webview.postMessage({
      type: 'getCurrentUser'
    });
  });
}

/**
 * 获取工序ID列表（针对工序流程分配页面）
 * @returns {Array} 工序ID列表
 */
export function getOperationIds() {
  const params = getInitParams();
  return params.operationIds || [];
}

/**
 * 获取部门数据
 * @returns {Promise} 包含部门数据的Promise
 */
export function getDepartments() {
  return new Promise((resolve, reject) => {
    // 注册一次性事件监听器接收结果
    const listener = function(e) {
      window.removeEventListener('departments-data', listener);
      if (e.detail && e.detail.error) {
        reject(new Error(e.detail.error));
      } else if (e.detail && e.detail.data) {
        resolve(e.detail.data);
      } else {
        reject(new Error('获取部门数据失败: 无效的响应格式'));
      }
    };
    
    // 添加事件监听
    window.addEventListener('departments-data', listener);
    
    // 发送请求获取部门数据
    window.chrome.webview.postMessage({
      type: 'getDepartments'
    });
    
    // 设置超时
    setTimeout(() => {
      window.removeEventListener('departments-data', listener);
      reject(new Error('获取部门数据超时'));
    }, 15000); // 15秒超时
  });
}

/**
 * 提交工序流程分配结果
 * @param {Object} data 分配结果数据
 */
export function submitWorkflowAssignment(data) {
  window.chrome.webview.postMessage({
    type: 'submitWorkflowAssignment',
    data: data
  });
}
/**
 * 获取工序ID（针对工艺流程设计页面）
 * @returns {string} 工序ID
 */
export function getOperationId() {
  const params = getInitParams();
  return params.operationId || '';
}

// 导出默认对象
export default {
  initWinFormsBridge,
  getInitParams,
  closeWindow,
  getCurrentUser,
  getOperationIds,
  getOperationId,  
  getDepartments,
  submitWorkflowAssignment
}; 